package com.example.miaosh.base.mapper;

import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Component;

/**
 * <b>通用Mapper</b>
 * <p>
 * -Mapper层接口只需继承此接口就可以使用
 * 
 * @author Gray-bird
 *
 * @param <T>
 * 
 * @version 1.0
 */
@Component
public interface BaseMapper<T> {

	/**
	 * map条件查询所有
	 * 
	 * @param t
	 * @return List<T>
	 */
	List<T> listByMap(Map<String, Object> map);

	/**
	 * 实体条件查询所有
	 * 
	 * @param t
	 * @return List<T>
	 */
	List<T> listByObject(T t);

	/**
	 * 条件查询实体
	 * 
	 * @param t
	 * @return List<T>
	 */
	T listByParameter(Object t);

	/**
	 * 新增记录
	 * 
	 * @param t
	 * @return
	 */
	int save(T t);

	/**
	 * map更新记录
	 * 
	 * @param t
	 * @return
	 */
	int updateByMap(Map<String, Object> map);

	/**
	 * 更新记录
	 * 
	 * @param t
	 * @return
	 */
	int updateByObject(T t);

	/**
	 * 根据ID删除数据
	 * 
	 * @param t
	 * @return
	 */

	int deleteByObject(T t);

	/**
	 * -通过id删除数据
	 * 
	 * @param t
	 * @return
	 */
	int deleteById(int id);

	/**
	 * 根据ID查询单条数据
	 * 
	 * @param id
	 * @return
	 */
	T findById(Integer id);

	/**
	 * 获取总记录数
	 * 
	 * @param t
	 * @return
	 */

	Long getByObjectTotal(T t);

	/**
	 * 获取总记录数
	 * 
	 * @param t
	 * @return
	 */
	Long getByMapTotal(Map<String, Object> map);

	/**
	 * 查询所有列表
	 */
	List<T> listInfo();

	/**
	 * map获取一条记录
	 * 
	 * @param map
	 * @return
	 */
	T getRecord(Map<String, Object> map);
}
